約 4,114,347 件
https://w.atwiki.jp/ffgmgc/pages/16.html
CS1.6 メンバー募集中 CS S メンバー募集中 CoD4 メンバー募集中 SA メンバー募集中
https://w.atwiki.jp/livetube/pages/1525.html
( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_ \/ ドラ子 /  ̄ ̄ ̄ 基本情報 名前 draco 読み方 ドレイコ ジャンル ゲーム 性別 メス 年齢 3才 webカメラ なし マイク あり 配信者ページ こちらから 配信時間帯 不定期 あなたは - 人目のドラ息子であり現在-人の同類が当wikiを見つめています。 draco配信は専用タグ、ドラ子と「yobanaide」「TinkerBell」の提供でお送りします☆(ゝω・)v 実況作品名など MHP2G MHP3 .hack//シリーズ 東方系 ディシディアFF ダライアスバースト グラディウスⅤ R-TYPE⊿ デススマイルズ MHF(糞箱版) デススマイルズⅡ ケツイ 斑鳩 その他いろいろ 特徴 STG大好き oimosama至上主義者 ドラ息子 Deepなエロゲをプレイしている PSPゲームはキャプボで配信 鏡の導入等に詳しいらしい 夜勤病棟は制覇済み 最近糞箱を購入 バスケやってるんだぜ俺リア充みたいなアピールをよくする。 新宿近辺のゲーセンをよく徘徊している 配信中の名言・迷言 「BANされたくなかったら、面白いコメントでBAN(挽)回してw」 「後輩の女の子潰すなら、カルーア超イイヨ!!」 AIR、CLANNADは糞 くんかくんかだけでいいの? 主が行ったネ申プレイ・m9プレイ 毎日がM9 P2G配信にて、全部位破壊済みのGルーツを2日連続で凸者に処分させるという偉業を達成! dracoの地雷っぷりにウィルスバスターが反応!? MHP3配信・上位レウス戦にて脅威の「残り時間0:00」討伐を達成! 2011年4月30日 「第2回らいつべSTGリレー」に第5走者として参加!(ダライアスバースト・斑鳩) 「第2回らいつべSTGリレー」にて、引継ぎ走者の配信リンクを自動BANする偉業を達成! その他 配信雑記 + ドレイコQ&A Q 3才? メス? え? ↓ ドラ「☆(ゝω・)」 Q 初心者にオヌヌメなエロゲは? ↓ ドラ「っ蠱惑の刻」 Q 鏡ってどーやんの?おせーてエロイ人><; ↓ ドラ「配信で聞いてネ!!」 主のステータス 喋り B 思考力 B 曲のセンス A アクションスキル B エロゲ知識 S 助平度 ∞ 配信環境 OS Vista ultimate SP2 CPU Cpra2Duo E8500 3.16Ghz Memory DDR2 5GB マザボ P5B グラボ GeForece9800GTX+ コメント 名前 コメント すべてのコメントを見る wiki作成ありがとうございます -- (draco) 2010-03-20 17 26 58 wiki作成記念かきこ -- (名無しさん) 2010-03-20 16 58 06
https://w.atwiki.jp/akarinogo/pages/60.html
持ち時間30分で秒読み30秒×5回での、大会の1局かかった時間(分数) 表計算ソフトの統計の関数とかを使った計算とグラフ 1回戦(おぷーなデータ) 19 31 39 42 45 53 60 75 78 80 83 86 57.58分(平均) 47.38(標本標準偏差)(=STDEV(A1,A12)) 14.32835534分 (1σ) (68.27%) (=CONFIDENCE.T(0.3173,47.38,12)) 30.84076714分 (2σ) (95.45%) (=CONFIDENCE.T(0.0455,47.38,12)) 52.65662944分 (3σ) (99.73%) (=CONFIDENCE.T(0.0027,47.38,12)) 57.58分±14.32分 (68.27%) 57.58分±30.84分 (95.45%) 57.58分±52.65分 (99.73%) つまり99.73%の信頼度で、一局は約5分以上、約110分以内に終局するらしいです。 1回戦(かいとデータ) 24 29 39 42 46 53 60 75 78 80 81 86 43.84(標本標準偏差)(=STDEV(B1,B12)) 57.75分(平均) ±13.25781127分 (1σ) (68.27%) (=CONFIDENCE.T(0.3173,43.84,12)) ±28.53649707分 (2σ) (95.45%) (=CONFIDENCE.T(0.0455,43.84,12)) ±48.7223857分 (3σ) (99.73%) (=CONFIDENCE.T(0.0027,43.84,12)) 57.75分±13.25分 (68.27%) 57.75分±28.53分 (95.45%) 57.75分±48.72分 (99.73%) つまり99.73%の信頼度で、一局は約9分以上、約106分以内に終局するらしいです。 2回戦(かいとデータ) 29 31 40 43 44 49 52 53 55 57 62 62 64 64 50.36分(平均) 24.75(標本標準偏差)(=STDEV(C1,C14)) ±6.879256047分 (1σ) (68.27%) (=CONFIDENCE.T(0.3173,24.75,14)) ±14.63043288分 (2σ) (95.45%) (=CONFIDENCE.T(0.0455,24.75,14)) ±24.43574425分 (3σ) (99.73%) (=CONFIDENCE.T(0.0027,24.75,14)) 50.36分±6.87分 (68.27%) 50.36分±14.63分 (95.45%) 50.36分±24.43分 (99.73%) つまり99.73%の信頼度で、一局は約26分以上、約75分以内に終局するらしいです。 1・2回戦のグラフを重ねて表示(かいとデータ) 参考にしたサイト エクセルの統計の関数の「CONFIDENCE.T」を使ってみました。 なんか標本の数が少ないと「CONFIDENCE.T」を使うという内容が書かれてたサイトがあったので・・・↓↓ Excel関数での信頼区間の計算 どうも手計算と違う、誤差レベルじゃねぇ!とか思ってたら昔のExcelでは正規分布つかって計算してるとか。そりゃダメだわ・・・ 2011からCONFIDENCE関数からCONFIDENCE.T関数が追加されてt分布使う計算ができるようになったとかなんとか Excel 2008にはCONFIDENCE関数という信頼区間を計算する関数があります。これを使ったところ、手計算したものと値が違って出てきたので、おかしいと調べたら、t分布ではなく正規分布を用いているものだったので、標本の大きさが小さいときには誤差が大きかったのでした。 他に探しても、標本の信頼区間を計算する方法があらかじめ用意されていなかったので、95%信頼区間が必要な時には =標準偏差/SQRT(標本の大きさ)*TINV(1-0.95, 標本の大きさ-1) というやりかたで計算していました。 その後、Excel 2011が登場して状況が変わりました。Excel 2008までのCONFIDENCE関数は、Excel 2011からはCONFIDENCE.NORMになり、新たにt分布を用いた(標本の大きさを考慮する)CONFIDENCE.T関数が追加されたのです。下のように書けば、上記の数式と同じ計算結果になります。 =CONFIDENCE.T(1-0.95, 標準偏差, 標本の大きさ) http //d.hatena.ne.jp/teandt/20120814 t分布 ・・・ 母集団が正規分布で,母標準偏差が未知,標本数が少ないとき (概ねn が30未満)の推定と検定 http //www.geisya.or.jp/~mwm48961/statistics/sample3.htm 正規分布のグラフを書くのに参考にしたサイト↓↓ エクセルで、平均値と標準偏差だけがわかっている場合のデータについて、正規分布のグラフを書く。 NORMDISTを使います。 NORMDISTで数値の表を作ってそれをグラフ化するのです。 <例> 平均 98.00mm 標準偏差 3.00mm の長さの製品があるとします。 これの正規分布のグラフを描いてみます。 平均は セルB8 に98を入力 標準偏差 セルB9 に3を入力 グラフの範囲は±4σとれば充分山の形がわかるので、 98-4*3.00=86 98+4*3.00=120 86mmから120mmでOKです。 切り良く80mmから120mmとします。 セルA11 に 80 セルA12 に 81 セルA13 に 82 セルA50 に 119 セルA51 に 120 を入力します。 セルB11 に =NORMDIST(A11,$B$8,$B$9,FALSE) と入力し、 これをB51 までコピーします。 これで、数値の表ができました。 A11からB51の範囲を選択し、 挿入-グラフ-散布図 (平滑線で結んだグラフ)「完了」でグラフ化できます。 ふっー (^・^) <注意> FALSE のところをTRUE に変えると「確率密度」ではなく、 その関数はマイナス無限から値までの「累積確率」を数値で返してきます。 (山で囲われた面のうち、ある値から左側の面積のこと。山全体の面積は1) 公差はずれの製品は何%あるのか計算したいときなどに使います。 あっ,足し算間違えました。範囲は110mmまでで充分ですね。 http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1420595669 1σ= 68.27% 2σ= 95.45% 3σ= 99.73% 4σ= 99.9937% 工業製品では4σという規格値がある。 私もまったく知らなかったんだけど、ふとしたときに4σという規格がよく使われていることを知る。 この4σというのがまさにこの標準偏差の値なのです。 http //www.nabe-scm.com/weblog/archives/calendar/2007/09/01-index.php
https://w.atwiki.jp/headphone2ch/pages/37.html
MDR-MA900 【SONY】ソニーのヘッドホンPart20【MDR】 9 名無しさん┃】【┃Dolby 2012/04/05(木) 12 27 51.45 ID cH7tOBtq0 [1/1回発言] MA900買うわ テレビ用途なら全然問題ない、と思う 低音出てる 音場広い 37 名無しさん┃】【┃Dolby 2012/04/05(木) 22 10 48.65 ID 5OYv9DbZ0 [3/5回発言] MA900 今回一番の注目機種。一番時間使って試聴 装着感:最高。耳元はF1よりドライバが当たりにくい気がしたのは気のせいだろうか 側圧はかなり緩く、若干ずれやすい。パッドの素材は劣化しにくそうに見えたのが好印象。F1の二の轍は踏まないか 頭頂部だが、装着した瞬間だけ少しF1より気になるが、その後は本体の軽さのおかげか特に気にかかることは無かった。 正直F1の後継機名乗るだけの実力はある装着感だと思う。これが数時間着けた時にどうなるかは正式に売りだされてから試してみようと思う。 音質:当たり前だがシリーズの中では一番いい印象。下位で気になった低音が更に減り(70mmドライバなのに減っていいのかこれ)フラットっぽく感じた。 シリーズ中一番低音は少ないと思う。低音さえ出ていればおkな人にとっては下位のほうがいいかもしれん。 音はすっきりして開放感がある。音場は・・・んーあの環境でどこまで分かるかっていう話しだが広いとは思ったな。 ロックとかよりはゆったりした曲のほうが合いそうな傾向。 ただし上の人も書いてたがMA900が値下がりして、1万5千円~2万円で売られるようになった時にHD595とかDT990PROと互角の勝負出来るかってのには少し疑問。 それより聴き疲れない点は特筆すべきだし(DT990とかは刺さりすぎて俺は嫌い) 何より装着感最重視で、映画とかゲームをストレスなく楽しみたい人用じゃないかな。HD595より装着感は良かったよ。 展示機置かれた初日、ということでエージングはほぼゼロと考えて良い状態+ポタ環境なので、音質についてはそこまで参考になる意見とは自分でも思えないけど。と付け加えておく。 おまけ:想像通りだがMA900の音漏れすごい。開放型の中でも随一に凄い。やばい。MA500とかは普通の漏れ程度だった。 155 名無しさん┃】【┃Dolby 2012/04/13(金) 00 43 46.12 ID xGnIkow60 [1/2回発言] MDR-MA900がヨドバシに売ってたんで買ってきた つか21日発売じゃなかったのかと言いたい 予約してたKonozamaは相変わらず21日発送とかほざいてたからキャンセル余裕でした 装着感マジでいい。今の今までずっと家に帰ってから装着してるけど快適の一言 ただしF1みたくフリーでパッと装着位置が決まるわけじゃないから最初ちょっと頭頂部の扱いを考えながら装着位置を色々試してみてた 丁度いい長さと丁度いい位置が決まってからは文句が付けられん。F1と比較するなら・・・同等から僅差でF1の勝ちといったところ。装着感目当てでの購入はアリ 音もうん、2万弱とか今後1万7千円とかで売られるならまあおkじゃないかなエージングまだ数時間だけど 以前も書いたけど丸みがある聴き疲れないことを意識した音だから(鳴らし始め10分間は高音痛かったが) ロックには合わん。音圧もとても少なく、締まりもそれほどあるわけではない。 そして音圧はあんま無いが低音はスカキンとかではなく量はほどよく出てる エージングが進んだらもっと出るようになったりするのかな?70mmドライバってんだからその辺はどうなるか分からん F1と比べると変な硬さと無機質っぽさを感じる音だったF1からMA900では艶が乗った感じ 音楽を聴くならMA900のほうがずっといいと思う。特にバラードなら合う 映画とかゲームはまだ試してないが音とか云々よりこんだけ装着感良けりゃそりゃ合うわ 気になってる人は2万切った辺りからが買い時かと 勿論2万前後の評判機種と比べて間違いなく勝ってると言える部分は装着感だけだからそこ目的で買うのが正解 166 名無しさん┃】【┃Dolby 2012/04/13(金) 12 59 57.85 ID RVzGaXJP0 [1/3回発言] MA900午前中届いて聴いてる。 初めだからかハイハットシャリつく、もたつく、コーラス隠れる、ライブ音源迫力あり、かけ心地良い。 音質はzx700より数ランク下。ベースはzx700より追える。特定の帯域が抜けてる感じフラットじゃない。 テレビは環境音と声が浮き出てて面白い。やはりこっち用ですね。 しばらくはz1000とma900で落ち着けるかな。 192 名無しさん┃】【┃Dolby 2012/04/14(土) 18 41 30.18 ID QyTuUZAn0 [1/1回発言] MA900聞いてきたけど、低音の量が多い薄型テレビ音質だね 装着感も、軽いけどイヤパッドがちゃっちくて特に快適ってほどでもなかった 7000円位なら視野に入れてもいいかなって感じ 195 名無しさん┃】【┃Dolby 2012/04/14(土) 20 38 14.61 ID R9f3rPIO0 [1/1回発言] 今日量販店でMA900試聴してきた。 MA900とMA500以下とは全くの別物だな。 MA900の付け心地はかなり良い。全然疲れないってのも納得。 低音もしっかり出てるけど、ドンシャリってな感じではない気がする。 量販店だと周りがうるさいので静かなところでもうちょっと聴いてみたいところ。 18000円くらいが限界だろうけど、この値段になればかなり良いんでないかな。 ナイスなヘッドホン part127 - ログ速 869 名無しさん┃】【┃Dolby 2012/05/05(土) 23 15 17.49 ID OrxoekUwi [2/2回発言] では失礼して。 まず装着感がいいね、人によってはヘッドバンドが細いのが気になる人もいるみたいだが自分は気にならなかった。 これなら何時間でも付けてられそうだ。 人によっては耳がドライバに当たるかもしれんが、自分は前寄りにすることで問題なし。 そして音も中々良い。しっかりオープン型の恩恵を受けていると思う。 これ以外にオープン型一つしか持ってないからかもしれんけど、この音場感は中々癖になる。 音は締まりはあるけど硬い音ではなく、中々聞きやすい。Z1000に比べてまったりと楽しめるな。 エレクトロニカとか聞くとまったり出来て良い感じ。 ただ、ロックとか聞くにはもうちょっと高音が…もうちょっと欲しいな…まぁいいけど。 装着感も良いしまったり聞きたい人にオススメしたい。 音域バランスは低≒中 高といったところだろうか。 解像度は…うーん、同価格帯のオープン型を持ってないから分からんが、自分は悪くないと思った。特段良いわけでもないと思うが。 分析的に音を聞くには向かないな。 そういう聴き方をする人にはこのヘッドホンは勧めんね。これ以外に良いのがあると思う。 と、まぁこんな感じ。本当にエレクトロニカ聞くと癒される…。 画像
https://w.atwiki.jp/lascola/pages/16.html
Draco Can be dropped. Vanyah Can not be dropped. Picky Can be dropped. ・Draco + Flowco Imon Can be dropped. ・Draco + Devilco ・Draco + Chicoe ・Draco + Rabbo ・Pikey + Pee Noa Can be dropped. ・Draco + Birdco ・Pikey + Metalocks Draki Can be dropped. ・Draco + Manglock ・Pikey + Ukki ・Pikey + Beasco ・Imon + Goa ・Imon + Bebe ・Noa + Goa ・Noa + Rurabbi ・Noa + Mameo ・Noa + Jamoo ・Noa + Bookworm Gago Can be dropped. ・Imon + Inseco Bigon Can be dropped. ・Gago + Oilpot SQ-21 Can be dropped. ・Imon + MechaBall ・Imon + Yeon Kurma Can be dropped. ・Gago + Mosky ・Bigon + Bota ・Bigon + Sumping Deepsuffer Can be dropped. ・Pikey + MechaBall ・Gago + Beanie ・Gago + DooDoo ・Gago + RingWorm Mitra Can be dropped. ・Gago + Pengie ・Kurma + Bigon ・Kurma + Waterball ・Kurma + ForceFlyer ・Kurma + Pirosty ・Bigon + HighLife ・Bigon + Soo ArmaBall Can be dropped. ・Mitra + Mahollow ・Mitra + CheezDogg ・Mitra + Monoeye ・Kurma + Bota ・Bigon + Marogni ・Bigon + NTV Haedragon Can be dropped. ・Mitra + WildBuma ・Mitra + PayaPaya ・Kurma + CheezDogg Vanyah Can not be dropped. BattleDragon Can be dropped. ・Mitra + HighLife ・Haedragon + TankTortus ・Haedragon + Oscar ・Haedragon + Malreino BattleRoyale Can be dropped. ・BattleDragon + [1] Gamerika ・BattleDragon + Asakayza ・BattleDragon + MysticYoyo Lausta Can be dropped. ・Haedragon + Cactusing ・Haedragon + Synicks ・BattleDragon + Skullwiser ・[1] BattleRoyale + Skullwiser ・[1] BattleRoyale + MysticYoyo ・[1] BattleRoyale + [1] Clawless Vanyah Can not be dropped. Greentail Can be dropped. ・BattleDragon + [1] BattleRoyale ・BattleDragon + Synicks ・BattleDragon + [1] Pumped SilverLausta Can be dropped. ・[1] BattleRoyale + [1] Gamerika ・[1] BattleRoyale + [1] Chowie Neo BattleDragon Can be dropped. ・[1] BattleDragon + [1] PumpedCurse Dragoer Can be dropped. ・[1] SilverLausta + [1] Gamerika ・[1] SilverLausta + [1] Chowie ・[1] SilverLausta + Manta Vanyah Can not be dropped. NeoSilver Can not be dropped. ・[1] SilverLausta + [1] KingDusty ・[1] SilverLausta + MintRabie ・[1] SilverLausta + [1] Dashabell ・[1] SilverLausta + [1] Kugutu ・[1] Dragoer + [1] MintClaw ・[1] Dragoer + [1] Soulbreaker ・[1] Dragoer + [1] WingCrusher ・[1] Dragoer + [1] Dashabell Neo Dragoer Can be dropped. ・[1] Dragoer + [1] NeoSilver ・[1] Dragoer + [1] Neo Claw ・[1] Dragoer + [1] InsaneDoctor Vanyah Can not be dropped. Braki Can not be dropped. ・[1] NeoSilver + [1] Gokuma ・[1] NeoSilver + [1] NeoGamerika ・[1] NeoSilver + [1] BladeDasha ・[1] NeoSilver + [1] Snogyun BlazeRhino Can be dropped. Little Snickey Can be dropped.
https://w.atwiki.jp/csprogamers/
CS1.6 Progamers Devices
https://w.atwiki.jp/edh-commander/pages/208.html
Tundra 土地 — 平地(Plains) 島(Island) ((T):(白)か(青)を加える。) 引用元 Wisdom Guild 評価 (デュアルランド全般の評価を記述しています) マジック史上最初にして最強の2色土地、デュアルランド達。 統率者戦でも高い使用率を誇っている。 友好2色5種、対抗2色5種の計10種類が存在する。 白青:Tundra 白黒:Scrubland 青黒:Underground Sea 青赤:Volcanic Island 黒赤:Badlands 黒緑:Bayou 赤緑:Taiga 赤白:Plateau 緑白:Savannah 緑青:Tropical Island 用途は他のフォーマットと同じ。単純にアンタップインでデメリットのない2色土地として使ってもいいし、基本土地タイプを持っていることを利用して各種フェッチランドなどから持ってきてもいい。 基本土地タイプを持っているが、基本土地ではないので破滅(Ruination)や基本へ帰れ(Back to Basics)などの特殊土地対策には引っかかってしまう。場合によってはフェッチランドから基本土地を持ってきた方が良いときもあるだろう。 間違いなく強力なカードではあるのだが、再録禁止、かつ性能・人気の両方が高いカードと言うことでかなり高騰している。ショックランドやバトルランド、サイクリングデュアルランドなどで代用できなくはないので、予算に限りがある場合はそちらを優先するといいだろう。 類似カード いずれも2つの基本土地タイプを持つ土地 ショックランド バトルランド - 友好色5種のみ サイクリングデュアルランド - 友好色5種のみ 相性の良いカード 各種フェッチランド 自然の知識(Nature s Lore)のような基本土地タイプを参照する土地サーチ
https://w.atwiki.jp/ringnote/pages/62.html
※基本情報※ □フェイト/グランドオーダー公式サイト http //fate-go.jp/ □公式お知らせ http //www.fate-go.jp/news/ □公式ツイッター https //twitter.com/fgoproject ※【必読】ローカルルール※ ・スマホアプリ「Fate/Grand Order」の雑談スレです。 ・荒らしには構わないようにしましょう。 ・質問は特に禁止されていませんが、周囲の状況に配慮し、最低でも100レスくらい前のレスに回答が無いか調べましょう。 ・フレンド募集は特に禁止されていませんが、周りに配慮してやりましょう。で次回禁止される恐れがあります。 ・次スレは 960までに立てれる 900を踏んだ人にお願いします。ダメなら 920の人にお願いしましょう。 また中原の話題はやめましょう 課金ばっかしてるクズの集まりのスレです
https://w.atwiki.jp/yumenonakanosotomoto/pages/12.html
このページはhttp //so-zou.jp/robot/tech/physics-engine/ode/demo/boxstack.htmからの引用です so-zou.jp Webアプリ Desktopアプリ Mobileアプリ ブラウザ拡張 ロボット トップ ロボット 技術情報 物理計算エンジン ODE デモプログラム demo_boxstack ODE プログラミング解説 demo_boxstack (ODE 0.11.1) 動画をYouTubeで見る #include#include#include texturepath.h #ifdef_MSC_VER#pragmawarning(disable 4244 4305 )// 型変換に伴う精度喪失の警告を抑制する (VC++)#endif#include icosahedron_geom.h // 凸形状オブジェクト// 立方体の面dReal planes[] = { 1.0f, 0.0f, 0.0f, 0.25f, 0.0f, 1.0f, 0.0f, 0.25f, 0.0f, 0.0f, 1.0f, 0.25f, -1.0f, 0.0f, 0.0f, 0.25f, 0.0f, -1.0f, 0.0f, 0.25f, 0.0f, 0.0f, -1.0f, 0.25f, };constunsignedintplanecount = 6;// 立方体の点dReal points[] = { 0.25f, 0.25f, 0.25f, // 点0 -0.25f, 0.25f, 0.25f, // 点1 0.25f, -0.25f, 0.25f, // 点2 -0.25f, -0.25f, 0.25f, // 点3 0.25f, 0.25f, -0.25f, // 点4 -0.25f, 0.25f, -0.25f, // 点5 0.25f, -0.25f, -0.25f,// 点6-0.25f, -0.25f, -0.25f,// 点7};constunsignedintpointcount = 8;// 立方体のポリゴン (6つの四角形)unsignedintpolygons[] = { 4, 0, 2, 6, 4,// +X4, 1, 0, 4, 5,// +Y4, 0, 1, 3, 2,// +Z4, 3, 1, 5, 7,// -X4, 2, 3, 7, 6,// -Y4, 5, 4, 6, 7,// -Z}; // 適切な描画関数を選択する#ifdefdDOUBLE #definedsDrawBox dsDrawBoxD #definedsDrawSphere dsDrawSphereD #definedsDrawCylinder dsDrawCylinderD #definedsDrawCapsule dsDrawCapsuleD #definedsDrawConvex dsDrawConvexD#endif // 定数#defineNUM 100 // オブジェクトの最大数#defineDENSITY ( 5.0 )// すべてのオブジェクトの密度#defineGPB 3 // 1つのボディの最大のジオメトリ数#defineMAX_CONTACTS 8 // 1つのボディの最大の接点数#defineMAX_FEEDBACKNUM 20 // フィードバックの最大数#defineGRAVITY REAL( 0.5 )#defineUSE_GEOM_OFFSET 1 // 混成オブジェクトの重心をオフセットさせるか? // 動力学と衝突検出のオブジェクトstructMyObject { dBodyID body; // ボディdGeomID geom[ GPB ]; // ボディのジオメトリ};staticintnum = 0; // シミュレーション内のオブジェクトの数staticintnextobj = 0; // num == NUMとなったときに再利用される次のオブジェクトstaticdWorldID world;staticdSpaceID space;staticMyObject obj[ NUM ];staticdJointGroupID contactgroup;staticintselected = -1; // 選択されているオブジェクトstaticintshow_aabb = 0; // ジオメトリのAABBを表示するか?staticintshow_contacts = 0;// 接触点を表示するか?staticintrandom_pos = 1; // ランダムな位置からオブジェクトを落下させるか?staticintwrite_world = 0; // 現在の状態をファイルに書き出すか?staticintshow_body = 0; // ボディを表示するか?structMyFeedback { dJointFeedback fb;// ジョイントのフィードバックboolfirst; // 選択されているオブジェクトか?};staticMyFeedback feedbacks[ MAX_FEEDBACKNUM ];staticintdoFeedback = 0; // フィードバックを表示するか?staticintfbnum = 0; // フィードバックの数 力とトルクの取得(dJointFeedback) nearCallback // スペースの2つのオブジェクトが衝突する可能性があるときに、// dSpaceCollideによって呼び出されるstaticvoidnearCallback(void*data, dGeomID o1, dGeomID o2 ) {inti;// if( o1- body o2- body ) return; dBodyID b1 = dGeomGetBody( o1 ); dBodyID b2 = dGeomGetBody( o2 ); // 2つのボディがジョイントによって接続されているならば、何もせずに関数を抜けるif( b1 b2 dAreConnectedExcluding( b1, b2, dJointTypeContact ) ) { return; } dContact contact[ MAX_CONTACTS ];// up to MAX_CONTACTS contacts per box-boxfor( i = 0; i MAX_CONTACTS; i++ ) { contact[ i ].surface.mode = dContactBounce | dContactSoftCFM; contact[ i ].surface.mu = dInfinity; contact[ i ].surface.mu2 = 0; contact[ i ].surface.bounce = 0.1; contact[ i ].surface.bounce_vel = 0.1; contact[ i ].surface.soft_cfm = 0.01; } // 接触情報を作成するintnumc = dCollide( o1, o2, MAX_CONTACTS, contact[ 0 ].geom,sizeof( dContact ) );if( numc ) { dMatrix3 RI; dRSetIdentity( RI ); constdReal ss[ 3 ] = { 0.02, 0.02, 0.02 }; for( i = 0; i numc; i++ ) { // 接触ジョイントを作成する dJointID c = dJointCreateContact( world, contactgroup, contact + i ); dJointAttach( c, b1, b2 ); if( show_contacts ) { // 接触した位置に直方体を描画する dsDrawBox( contact[ i ].geom.pos, RI, ss ); } if( doFeedback ( b1 == obj[ selected ].body || b2 == obj[ selected ].body ) ) { if( fbnum MAX_FEEDBACKNUM ) { feedbacks[ fbnum ].first = ( b1 == obj[ selected ].body ); // 作成した接触ジョイントにフィードバックを設定する dJointSetFeedback( c, feedbacks[ fbnum++ ].fb ); } else { fbnum++; } } } } } ボディ同士がジョイントによって接続されているか確認する(dAreConnectedExcluding) 接触面の定義(dSurfaceParameters) 接触情報を作成する(dCollide) フィードバックの設定(dJointSetFeedback) start // シミュレーションを開始するstaticvoidstart() { dAllocateODEDataForThread( dAllocateMaskAll ); // 視点を設定するstaticfloatxyz[ 3 ] = { 2.1640f, -1.3079f, 1.7600f };staticfloathpr[ 3 ] = { 125.5000f, -17.0000f, 0.0000f }; dsSetViewpoint( xyz, hpr ); printf( To drop another object, press \n ); printf( b for box.\n ); printf( s for sphere.\n ); printf( c for capsule.\n ); printf( y for cylinder.\n ); printf( v for a convex object.\n ); printf( x for a composite object.\n ); printf( To select an object, press space.\n ); printf( To disable the selected object, press d.\n ); printf( To enable the selected object, press e.\n ); printf( To dump transformation data for the selected object, press p.\n ); printf( To toggle showing the geom AABBs, press a.\n ); printf( To toggle showing the contact points, press t.\n ); printf( To toggle dropping from random position/orientation, press r.\n ); printf( To save the current state to state.dif , press 1.\n ); printf( To show joint feedbacks of selected object, press f.\n ); } locase // 小文字に変換するcharlocase(charc ) {if( c = A c = Z ) { returnc - ( a - A ); }else{ returnc; } } command // キー押下時に呼び出されるstaticvoidcommand(intcmd ) { size_t i; // オブジェクトを識別するための番号intj, k; dReal sides[ 3 ]; dMass m;intsetBody;// ボディとの関連付け (dGeomSetBody) は不要か? cmd =locase( cmd );if( cmd == b || cmd == s || cmd == c || cmd == x || cmd == y || cmd == v ) { setBody = 0;// ボディとの関連付け必要if( num NUM ) { i = num; num++; } else { i = nextobj; nextobj++; if( nextobj = num ) { nextobj = 0; } // iの位置にあるボディとジオメトリを破棄する dBodyDestroy( obj[ i ].body ); for( k = 0; k GPB; k++ ) { if( obj[ i ].geom[ k ] ) { dGeomDestroy( obj[ i ].geom[ k ] ); } } // 破棄したオブジェクトのメモリを0でクリアする memset( obj[ i ], 0,sizeof( obj[ i ] ) ); } // ボディを作成する obj[ i ].body = dBodyCreate( world ); for( k = 0; k 3; k++ ) { sides[ k ] = dRandReal() * 0.5 + 0.1; } dMatrix3 R; if( random_pos ) { dBodySetPosition( obj[ i ].body, dRandReal() * 2 - 1, dRandReal() * 2 - 1, dRandReal() + 2 ); dRFromAxisAndAngle( R, dRandReal() * 2.0 - 1.0, dRandReal() * 2.0 - 1.0, dRandReal() * 2.0 - 1.0, dRandReal() * 10.0 - 5.0 ); } else { dReal maxheight = 0; for( k = 0; k num; k++ ) { constdReal *pos = dBodyGetPosition( obj[ k ].body ); if( pos[ 2 ] maxheight ) { maxheight = pos[ 2 ]; } } dBodySetPosition( obj[ i ].body, 0, 0, maxheight + 1 ); dRSetIdentity( R );// dRFromAxisAndAngle( R, 0, 0, 1, /* dRandReal() * 10.0 - 5.0 */ 0 ); } dBodySetRotation( obj[ i ].body, R ); dBodySetData( obj[ i ].body, (void* )i ); if( cmd == b )// 直方体 (Box) { dMassSetBox( m, DENSITY, sides[ 0 ], sides[ 1 ], sides[ 2 ] ); obj[ i ].geom[ 0 ] = dCreateBox( space, sides[ 0 ], sides[ 1 ], sides[ 2 ] ); } elseif( cmd == c )// カプセル (Capsule) { sides[ 0 ] *= 0.5; dMassSetCapsule( m, DENSITY, 3, sides[ 0 ], sides[ 1 ] ); obj[ i ].geom[ 0 ] = dCreateCapsule( space, sides[ 0 ], sides[ 1 ] ); } elseif( cmd == v )// 凸形状オブジェクト (Convex Object) { dMassSetBox( m, DENSITY, 0.25, 0.25, 0.25 );#if0 obj[ i ].geom[ 0 ] = dCreateConvex( space, planes, planecount, points, pointcount, polygons );#else obj[ i ].geom[ 0 ] = dCreateConvex( space, Sphere_planes, Sphere_planecount, Sphere_points, Sphere_pointcount, Sphere_polygons );#endif } elseif( cmd == y )// 円柱 (Cylinder) { dMassSetCylinder( m, DENSITY, 3, sides[ 0 ], sides[ 1 ] ); obj[ i ].geom[ 0 ] = dCreateCylinder( space, sides[ 0 ], sides[ 1 ] ); } elseif( cmd == s )// 球 (Sphere) { sides[ 0 ] *= 0.5; dMassSetSphere( m, DENSITY, sides[ 0 ] ); obj[ i ].geom[ 0 ] = dCreateSphere( space, sides[ 0 ] ); } elseif( cmd == x USE_GEOM_OFFSET )// (重心オフセット) 混成オブジェクト (Composite Object) { setBody = 1;// ボディとの関連付け不要 dMass m2; dMassSetZero( m ); dReal dpos[ GPB ][ 3 ]; // ジオメトリ間の位置のずれ dMatrix3 drot[ GPB ]; // ランダムな位置を設定する for( j = 0; j GPB; j++ ) { for( k = 0; k 3; k++ ) { dpos[ j ][ k ] = dRandReal() * 0.3 - 0.15; } } // 総質量を求める for( k = 0; k GPB; k++ ) { if( k == 0 )// 球 (Sphere) { dReal radius = dRandReal() * 0.25 + 0.05; obj[ i ].geom[ k ] = dCreateSphere( space, radius ); dMassSetSphere( m2, DENSITY, radius ); } elseif( k == 1 )// 直方体 (Box) { obj[ i ].geom[ k ] = dCreateBox( space, sides[ 0 ], sides[ 1 ], sides[ 2 ] ); dMassSetBox( m2, DENSITY, sides[ 0 ], sides[ 1 ], sides[ 2 ] ); } else// カプセル (Capsule) { dReal radius = dRandReal() * 0.1 + 0.05; dReal length = dRandReal() * 1.0 + 0.1; obj[ i ].geom[ k ] = dCreateCapsule( space, radius, length ); dMassSetCapsule( m2, DENSITY, 3, radius, length ); } dRFromAxisAndAngle( drot[ k ], dRandReal() * 2.0 - 1.0, dRandReal() * 2.0 - 1.0, dRandReal() * 2.0 - 1.0, dRandReal() * 10.0 - 5.0 ); dMassRotate( m2, drot[ k ] ); dMassTranslate( m2, dpos[ k ][ 0 ], dpos[ k ][ 1 ], dpos[ k ][ 2 ] ); // 総質量に加算する dMassAdd( m, m2 ); } for( k = 0; k GPB; k++ ) { dGeomSetBody( obj[ i ].geom[ k ], obj[ i ].body ); // ジオメトリの重心をオフセットさせる dGeomSetOffsetPosition( obj[ i ].geom[ k ], dpos[ k ][ 0 ] - m.c[ 0 ], dpos[ k ][ 1 ] - m.c[ 1 ], dpos[ k ][ 2 ] - m.c[ 2 ] ); dGeomSetOffsetRotation( obj[ i ].geom[ k ], drot[ k ] ); } dMassTranslate( m, -m.c[ 0 ], -m.c[ 1 ], -m.c[ 2 ] ); dBodySetMass( obj[ i ].body, m ); } elseif( cmd == x )// 混成オブジェクト (Composite Object) { dGeomID g2[ GPB ]; // ジオメトリ dReal dpos[ GPB ][ 3 ];// ジオメトリ間の位置のずれ dMass m2; dMassSetZero( m ); // ランダムな位置を設定する for( j = 0; j GPB; j++ ) { for( k = 0; k 3; k++ ) { dpos[ j ][ k ] = dRandReal() * 0.3 - 0.15; } } for( k = 0; k GPB; k++ ) { // ジオメトリ変換オブジェクトを作成する obj[ i ].geom[ k ] = dCreateGeomTransform( space ); dGeomTransformSetCleanup( obj[ i ].geom[ k ], 1 ); if( k == 0 )// 球(Sphere) { dReal radius = dRandReal() * 0.25 + 0.05; g2[ k ] = dCreateSphere( 0, radius ); dMassSetSphere( m2, DENSITY, radius ); } elseif( k == 1 )// 直方体(Box) { g2[ k ] = dCreateBox( 0, sides[ 0 ], sides[ 1 ], sides[ 2 ] ); dMassSetBox( m2, DENSITY, sides[ 0 ], sides[ 1 ], sides[ 2 ] ); } else// カプセル(Capsule) { dReal radius = dRandReal() * 0.1 + 0.05; dReal length = dRandReal() * 1.0 + 0.1; g2[ k ] = dCreateCapsule( 0, radius, length ); dMassSetCapsule( m2, DENSITY, 3, radius, length ); } // ジオメトリ変換オブジェクトにジオメトリを格納する dGeomTransformSetGeom( obj[ i ].geom[ k ], g2[ k ] ); dMatrix3 Rtx; dRFromAxisAndAngle( Rtx, dRandReal() * 2.0 - 1.0, dRandReal() * 2.0 - 1.0, dRandReal() * 2.0 - 1.0, dRandReal() * 10.0 - 5.0 ); // ジオメトリの位置と姿勢を設定する dGeomSetPosition( g2[ k ], dpos[ k ][ 0 ], dpos[ k ][ 1 ], dpos[ k ][ 2 ] ); dGeomSetRotation( g2[ k ], Rtx ); // 質量パラメータを回転させ移動する dMassRotate( m2, Rtx ); dMassTranslate( m2, dpos[ k ][ 0 ], dpos[ k ][ 1 ], dpos[ k ][ 2 ] ); // 総質量に加算する dMassAdd( m, m2 ); } // 重心が ( 0, 0, 0 ) となるように、すべてのカプセル化されたオブジェクトを移動する for( k = 0; k GPB; k++ ) { dGeomSetPosition( g2[ k ], dpos[ k ][ 0 ] - m.c[ 0 ], dpos[ k ][ 1 ] - m.c[ 1 ], dpos[ k ][ 2 ] - m.c[ 2 ] ); } dMassTranslate( m, -m.c[ 0 ], -m.c[ 1 ], -m.c[ 2 ] ); } // ボディとの関連付けが不要とされていないならば、関連付けを行うif( !setBody ) { for( k = 0; k GPB; k++ ) { if( obj[ i ].geom[ k ] ) { dGeomSetBody( obj[ i ].geom[ k ], obj[ i ].body ); } } } dBodySetMass( obj[ i ].body, m ); } if( cmd == ) { // 選択されているオブジェクトを変更する selected++; if( selected = num ) { selected = 0; } if( selected 0 ) { selected = 0; } }elseif( cmd == d selected = 0 selected num ) { // 選択されているオブジェクトを無効にする dBodyDisable( obj[ selected ].body ); }elseif( cmd == e selected = 0 selected num ) { // 選択されているオブジェクトを有効にする dBodyEnable( obj[ selected ].body ); }elseif( cmd == a ) { show_aabb ^= 1; }elseif( cmd == t ) { show_contacts ^= 1; }elseif( cmd == r ) { random_pos ^= 1; }elseif( cmd == 1 ) { write_world = 1; }elseif( cmd == p selected = 0 ) { // 選択されているオブジェクトの位置と姿勢を表示するconstdReal *pos = dGeomGetPosition( obj[ selected ].geom[ 0 ] ); constdReal *rot = dGeomGetRotation( obj[ selected ].geom[ 0 ] ); printf( POSITION \n\t[ %f, %f, %f ]\n\n , pos[ 0 ], pos[ 1 ], pos[ 2 ] ); printf( ROTATION \n\t[ %f, %f, %f, %f ]\n\t[ %f, %f, %f, %f ]\n\t[ %f, %f, %f, %f ]\n\n , rot[ 0 ], rot[ 1 ], rot[ 2 ], rot[ 3 ], rot[ 4 ], rot[ 5 ], rot[ 6 ], rot[ 7 ], rot[ 8 ], rot[ 9 ], rot[ 10 ], rot[ 11 ] ); }elseif( cmd == f selected = 0 selected num ) { if( dBodyIsEnabled( obj[ selected ].body ) ) { doFeedback = 1; } } } ジオメトリの作成(dCreate) 質量(dMass) ジオメトリ変換オブジェクト ボディの有効化/無効化(dBodyEnable、dBodyDisable) drawGeom // ジオメトリを描画するvoiddrawGeom( dGeomID g,constdReal *pos,constdReal *R,intshow_aabb ) {inti; if( !g ) { return; } if( !pos ) { pos = dGeomGetPosition( g ); } if( !R ) { R = dGeomGetRotation( g ); } // ジオメトリの種類を取得するinttype = dGeomGetClass( g ); if( type == dBoxClass )// 直方体{ dVector3 sides; dGeomBoxGetLengths( g, sides ); dsDrawBox( pos, R, sides ); }elseif( type == dSphereClass )// 球{ dsDrawSphere( pos, R, dGeomSphereGetRadius( g ) ); }elseif( type == dCapsuleClass )// カプセル{ dReal radius, length; dGeomCapsuleGetParams( g, radius, length ); dsDrawCapsule( pos, R, length, radius ); }elseif( type == dConvexClass )// 凸形状{#if0 dsDrawConvex( pos, R, planes, planecount, points, pointcount, polygons );#else dsDrawConvex( pos, R, Sphere_planes, Sphere_planecount, Sphere_points, Sphere_pointcount, Sphere_polygons );#endif}elseif( type == dCylinderClass )// 円柱{ dReal radius, length; dGeomCylinderGetParams( g, radius, length ); dsDrawCylinder( pos, R, length, radius ); }elseif( type == dGeomTransformClass )// ジオメトリ変換オブジェクト{ // ジオメトリ変換オブジェクトに格納されているジオメトリを取得する dGeomID g2 = dGeomTransformGetGeom( g ); constdReal *pos2 = dGeomGetPosition( g2 ); constdReal *R2 = dGeomGetRotation( g2 ); dVector3 actual_pos; dMatrix3 actual_R; dMULTIPLY0_331( actual_pos, R, pos2 ); actual_pos[ 0 ] += pos[ 0 ]; actual_pos[ 1 ] += pos[ 1 ]; actual_pos[ 2 ] += pos[ 2 ]; dMULTIPLY0_333( actual_R, R, R2 ); // ジオメトリ変換オブジェクトに格納されていたジオメトリで描画し直すdrawGeom( g2, actual_pos, actual_R, 0 ); } // ジオメトリgのボディを描画するif( show_body ) { dBodyID body = dGeomGetBody( g ); if( body ) { constdReal *bodypos = dBodyGetPosition( body ); constdReal *bodyr = dBodyGetRotation( body ); dReal bodySides[ 3 ] = { 0.1, 0.1, 0.1 };// 描画サイズ dsSetColorAlpha( 0, 1, 0, 1 ); dsDrawBox( bodypos, bodyr, bodySides ); } } // ジオメトリgの境界ボックスを描画するif( show_aabb ) { // 境界ボックスを取得する dReal aabb[ 6 ]; dGeomGetAABB( g, aabb ); dVector3 bbpos; for( i = 0; i 3; i++ ) { bbpos[ i ] = 0.5 * ( aabb[ i * 2 ] + aabb[ i * 2 + 1 ] ); } dVector3 bbsides; for( i = 0; i 3; i++ ) { bbsides[ i ] = aabb[ i * 2 + 1 ] - aabb[ i * 2 ]; } dMatrix3 RI; dRSetIdentity( RI ); dsSetColorAlpha( 1, 0, 0, 0.5 ); dsDrawBox( bbpos, RI, bbsides ); } } ジオメトリの種類の取得(dGeomGetClass) 境界ボックスの取得(dGeomGetAABB) simLoop // シミュレーション ループstaticvoidsimLoop(intpause ) { dsSetColor( 0, 0, 2 ); // 衝突するボディを検出するdSpaceCollide( space, 0, nearCallback); if( !pause ) { // シミュレーションのステップを進める dWorldQuickStep( world, 0.02 ); } // ワールドの状態をファイルに出力するif( write_world ) { FILE *f = fopen( state.dif , wt ); if( f ) { dWorldExportDIF( world, f, X ); fclose( f ); } write_world = 0; } // フィードバックを表示するif( doFeedback ) { if( fbnum MAX_FEEDBACKNUM ) { printf( joint feedback buffer overflow!\n ); } else { dVector3 sum = { 0, 0, 0 }; printf( \n ); for(inti = 0; i fbnum; i++ ) { dReal *f = feedbacks[ i ].first ? feedbacks[ i ].fb.f1 // ジョイントがボディ1に作用する力 feedbacks[ i ].fb.f2;// ジョイントがボディ2に作用する力 printf( %f %f %f\n , f[ 0 ], f[ 1 ], f[ 2 ] ); sum[ 0 ] += f[ 0 ]; sum[ 1 ] += f[ 1 ]; sum[ 2 ] += f[ 2 ]; } printf( Sum %f %f %f\n , sum[ 0 ], sum[ 1 ], sum[ 2 ] ); dMass m; dBodyGetMass( obj[ selected ].body, m ); printf( Object G=%f\n , GRAVITY * m.mass ); } doFeedback = 0; fbnum = 0; } // ジョイント グループを破棄する (すべての接触ジョイントを破棄する)dJointGroupEmpty( contactgroup ); dsSetColor( 1, 1, 0 ); dsSetTexture( DS_WOOD ); for(inti = 0; i num; i++ ) { for(intj = 0; j GPB; j++ ) { // 描画色を設定する if( i == selected )// オブジェクトが選択されている { dsSetColor( 0, 0.7, 1 ); } elseif( ! dBodyIsEnabled( obj[ i ].body ) )// ボディが無効状態 { dsSetColor( 1, 0.8, 0 ); } else { dsSetColor( 1, 1, 0 ); } // ジオメトリを描画する drawGeom( obj[ i ].geom[ j ], 0, 0, show_aabb ); } } } ワールドのエクスポート(dWorldExportDIF) ジョイントのフィードバック ボディの有効/無効(dBodyIsEnabled) main intmain(intargc,char**argv ) {// drawstuffの設定をするdsFunctions fn; fn.version = DS_VERSION; fn.start = start; fn.step = simLoop; fn.command = command; fn.stop = 0; fn.path_to_textures = DRAWSTUFF_TEXTURE_PATH; dInitODE2( 0 ); // ワールドを作成するworld = dWorldCreate(); space = dHashSpaceCreate( 0 ); contactgroup = dJointGroupCreate( 0 ); dWorldSetGravity( world, 0, 0, -GRAVITY ); dWorldSetCFM( world, 1e-5 ); // CFMdWorldSetAutoDisableFlag( world, 1 );// 自動無効化を有効#if1 dWorldSetAutoDisableAverageSamplesCount( world, 10 );#endif dWorldSetLinearDamping( world, 0.00001 );// 速度の減衰率dWorldSetAngularDamping( world, 0.005 );// 角速度の減衰率dWorldSetMaxAngularSpeed( world, 200 );// 角速度の最大値 dWorldSetContactMaxCorrectingVel( world, 0.1 );// 修正速度dWorldSetContactSurfaceLayer( world, 0.001 );// 表面層の厚さ dCreatePlane( space, 0, 0, 1, 0 ); memset( obj, 0,sizeof( obj ) ); // シミュレーションを開始するdsSimulationLoop( argc, argv, 352, 288, fn ); dJointGroupDestroy( contactgroup ); dSpaceDestroy( space ); dWorldDestroy( world ); dCloseODE(); return0; } ワールドの減衰(damping) 接触時の挙動 導入 ライブラリのビルド 初期化と終了処理 数学関数 データ型 オブジェクト ボディ 質量 ジオメトリ ワールド スペース ジョイント ジョイント グループ 接触ジョイント ERP/CFM 角度モーター 固定ジョイント 衝突検出 サンプルコード 衝突検出ライブラリ デモプログラム demo_boxstack demo_chain1 demo_cylvssphere demo_hinge Drawstuff シミュレーション 描画処理 メッセージ エラー処理 エラーメッセージ Ode.NET お問い合わせ プライバシーポリシー サイトマップ Copyright © 2006-2016BABA. All Rights Reserved.
https://w.atwiki.jp/mtgflavortext/pages/3715.html
Drafna, founder of the College of Lat-Nam, could create a working model from even the smallest remnants of a newly unearthed artifact. アンティキティー 【M TG Wiki】 名前